架設好elk之後,除了kibana可以看以外 想要做及時的警報系統
我們這邊選擇用slack(也有很多的選擇啦 寄信、Post、TG等等)
這邊的namespace用得是yc-log 記得改成想要的形狀 (沒改過就是default)
我們先新增兩個config檔案
這個主要是修改他的查詢頻率
kind: ConfigMap
apiVersion: v1
metadata:
name: elastalert-config
namespace: yc-log
data:
elastalert_config: |-
---
rules_folder: /opt/rules
scan_subdirectories: false
run_every: # 查詢頻率
minutes: 1
buffer_time:
minutes: 15
es_host: elk-elasticsearch.yc-log.svc.cluster.local #1
es_port: 80 #2
writeback_index: elastalert
use_ssl: False
verify_certs: True
alert_time_limit:
minutes: 2880
#1 這邊請填自己的elasticsearch 大概會長這樣 elk-elasticsearch.yc-log.svc.cluster.local
#2 port號記得改
新增第二個config
這個主要是修改規則
kind: ConfigMap
apiVersion: v1
metadata:
name: elastalert-rules
namespace: yc-log
data:
rule_config.yaml: |-
name: yc-error #1
es_host: elk-elasticsearch.yc-log.svc.cluster.local
es_port: 80
type: any
index: yc-test-* #2
filter:
- query:
query_string:
query: "LOGLEVEL:ERROR" #3
alert:
- "slack"
slack_webhook_url:
"https://hooks.slack.com/services/T1PH69YNN/B022L09HU3B/ycisgoodguy" #4
#1 這邊會是到時候寄信時的一個token
#2 這邊是你想要監控的index
#2.1 如果你想要監控多個從kibana來的index , 就應該寫index: 'yc-test-','yc2-test-'
#3 這邊記得改成你想要過濾的內容 請進kibana好好看一下 我這邊寫的是如果我的LOGLEVEL這個type是ERROR的 進行警報
#4 這邊填slack機器人的url 文章後面補充
最後就是Deployment了,用volumes把這兩個config檔案丟到該丟的位置
kind: Deployment
apiVersion: apps/v1
metadata:
name: elastalert
namespace: yc-log
spec:
replicas: 1
selector:
matchLabels:
app: elastalert
template:
metadata:
labels:
app: elastalert
spec:
volumes:
- name: rules
configMap:
name: elastalert-rules-test
defaultMode: 420
- name: config
configMap:
name: elastalert-config
items:
- key: elastalert_config
path: elastalert_config.yaml
defaultMode: 420
containers:
- name: elastalert
image: 'jertel/elastalert-docker:0.2.4'
resources:
limits:
cpu: 50m
memory: 256Mi
requests:
cpu: 50m
memory: 256Mi
volumeMounts:
- name: config
mountPath: /opt/config
- name: rules
mountPath: /opt/rules
就完成啦 記得去
kubectl logs elastalert-ycycycycyc -n yc-log
看一下有沒有啥問題
之後再補一篇 如何方便test的方法